home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-10-13 | 5.0 KB | 175 lines | [TEXT/KAHL] |
- // TOP 5 EXCUSES WHY THIS PROJECT WAS LATE:
- // 1. "I though you said it was due NEXT month!"
- // 2. The Product Manager quit after we missed the beta
- // acceptance deadline.
- // 3. Somebody activated the fire alarm while we were
- // holding a brainstorming session, and all our
- // ideas were lost.
- // 4. QA didn't keep us up to date on active bugs.
- // 5. I just couldn't wait to try out the new game of
- // solitaire that came with System 7.5!
-
- // The skill of the product manager is the key to a
- // successful product.
- enum {
- // Manager ratings.
- noManager = 0,
- lazyManager = 1,
- poorManager = 2,
- okManager = 3,
- motivatedManager = 4,
- excellentManager = 5
- };
-
- enum {
- // System versions.
- system7 = 7,
- system6 = 6,
- system5 = 5,
- system4 = 4,
- system3 = 3,
- system2 = 2,
- system1 = 1
- };
-
-
- // It assumed that the better the manager is, the more lines
- // the engineers will be motivated to write.
- #define juniorLines (100 + (20 * manager))
- #define seniorLines (200 + (25 * manager))
-
- // Every large project will have an overhead for planning,
- // designing, and preparing for development.
- #define overhead (linesC / 5000)
-
- // These ratios are based on Barne's matrix equations
- // related to the study of time-space software development
- // theorems. (trust me!)
- #define PPCNativeRatio (float) \
- (1.75 - (.02 * powerMacs))
- #define joltRatio (float) (.7)
- #define systemSupportRatio (float) \
- (7.0 / systemSupport)
-
- // Here again,the manager can motivate both QA and UI
- // people to be more productive.
- #define qaRatio 1 - (.1 + (.01 * manager) * qaPeople)
- #define uiRatio (float) ((1.2 - \
- (.01 * manager)) * (seniorEng - uiPeople))
-
- // Localization- a nightmare. Enough said.
- #define localizedRatio (float) (1.35 * localized)
-
-
- // ***** SoftwareTimeEstimate *****
- //
- // A simplified algorithm that accurately calculates
- // the time in calendar days for any Macintosh software
- // product to be completed.
- //
- // The complete algorithm and collection of equations
- // can be found in E. Barne's
- // 'Estimation of Time-Space Development Theorems',
- // published by Academic Press.
- //
- // Implementation by Jeremy Vineyard,
- // Lawrence, KS
-
-
- unsigned short SoftwareTimeEstimate(linesC, seniorEng,
- juniorEng, systemSupport, PPCNative, powerMacs, manager,
- jolt, qaPeople, uiPeople, localized)
-
- // Estimated # lines of source code in C.
- unsigned long linesC;
-
- // # of competent engineers with more than 5
- // years experience.
- unsigned short seniorEng;
-
- // # of junior engineers with less than 2
- // years experience.
- unsigned short juniorEng;
-
- // Earliest version of system software supported by
- // product (1-7)
- unsigned short systemSupport;
-
- // TRUE if product will be PowerPC native.
- Boolean PPCNative;
-
- // # of PowerMacs available to developers (1-30).
- unsigned short powerMacs;
-
- // Rating of manager 1-5 (1 is poor, 5 is excellent)
- // or 0 if none.
- unsigned short manager;
-
- // TRUE if company has steady supply of Jolt cola.
- Boolean jolt;
-
- // # of trained, in-house testers (most important).
- unsigned short qaPeople;
-
- // # of people responsible for making decisions about UI.
- unsigned short uiPeople;
-
- // # of Languages product must be localized to before
- // shipping or 0 if none.
- unsigned short localized;
- {
- float time, ratio;
- short linesADay;
-
-
- // Calculate the lines of source code that can be
- // produced per day based upon the number of engineers
- // working on the product.
- // (Must have at least one engineer)
- linesADay = (seniorEng * seniorLines) + (juniorEng * juniorLines);
-
- // Estimate the # of days it will take to produce the
- // specified amount of code.
- time = (linesC / linesADay) + overhead;
-
- // The farther backwards this product is compatible with
- // system versions, the more time it will take to develop.
- // systemSupport should be from 1 (System 1.0) to 7.
- time *= systemSupportRatio;
-
- // More development & QA time will need to be spent on
- // a product that is PowerPC native. The more Power Macs
- // that are available to developers, the faster the
- // development & testing process will proceed.
- if (PPCNative)
- time *= PPCNativeRatio;
-
- // o JOLT COLA! o
- // o GIve the PRogramMeRS that EXtra ZING! to geT thEm o
- // o MOTIVATED!! o
- if (jolt)
- time *= joltRatio;
-
- // Quality assurance is one of the most important
- // aspects of a product's construction. Without it, the
- // product will fail to reach the user base because of
- // too many bugs. QA can never be overstaffed!
- time *= qaRatio;
-
- // User interface has a limited potential because people
- // are likely to have very set opinions, and if there
- // are too many UI people, it can kill a product. There
- // should never be more UI personnel than engineers.
- if (uiPeople > seniorEng)
- time *= uiRatio;
-
- // The more languages the product must be localized to
- // before it can be shipped has a drastic effect on the
- // development time.
- if (localized)
- time *= localizedRatio;
-
- return (short) time;
- }
-
-